program letter_size;

{13 a 25 -
30 a 60 -
70 a 160 -
200 a 400 -
500 a 1000 -
1000 a infinito -
}


uses
  Classes, SysUtils;

 const MAX = 100;   // Danilo

 type
    TArrayStr = Array [1..MAX] of String; // Danilo

var
  lista: TStringList;
  position: Integer;
  arquivo:  String;
  Objeto:   String;
  Name:     String;
  // INICIO var Danilo
   File1: TextFile;
 Str: String;
 hist : TArrayStr;
 n : Integer = 100; // qlqr numero. So para nao dar hint de nao incializacao.
 acuidade : Integer;
 // FIM var Danilo
{$IFDEF WINDOWS}{$R letter_size.rc}{$ENDIF}




function ler_historico(var n : Integer) : TArrayStr;
var i:Integer = 1;
begin
    AssignFile(File1, 'historico.dat');
  {$I-}
  try
    Reset(File1);
    repeat
      Readln(File1, ler_historico[i]); // Reads the whole line from the file
      {Writeln(ler_historico[i]); // Writes the line read}
      i := i+1;
    until(EOF(File1)); // EOF(End Of File) The the program will keep reading new lines until there is none.
  except
    Writeln('ERROR IORESULT:', IOResult);
  end;
  {$I+}
  n := i-1;
  CloseFile(File1);
  // writeln('n= ',n);
end;

 function encontrar_resultado(str : String;hist : TArrayStr; n : Integer) : Integer;
 var i,j,achou,num : Integer;

 begin
    achou := 0; // False. Se achar, achou terá o valor da linha
    for i:=2 to n do
    begin
        for j:=1 to Length(str) do
        begin
            // writeln(j);
            if str[j]<>hist[i,j] then
               break;
        end;
        if (j = Length(str)) and (hist[i,j+1] = ',') then
           begin
                achou := i;
                break;
           end;
    end;

    if achou = 0 then
    begin
       Result := -1;
       writeln('Nome nao encontrado');
    end
    else  // Achou o nome
    begin
         // joazinho,20 / 165,9/3/2010 14:30:25
         j := 1;
         while hist[achou,j] <> '/' do
               begin
                   j:=j+1;
               end;
         j := j+2;

         num:=0;
         while hist[achou,j] <> ',' do
               begin
                    num:=10*num+(Integer(hist[achou,j])-Integer('0'));
                    //writeln('num = ',num);
                   j := j+1;
               end;
    Result:=num;
    end;
end;


// DANILO
{begin
  hist:=ler_historico(n);
  writeln('Palavra a ser encontrada:');
  readln(Str);
  writeln(encontrar_resultado(Str,hist,n));
  Readln;
end.}




begin
  hist:=ler_historico(n);
  writeln('Palavra a ser encontrada:');
  //readln(Str);
  acuidade:=encontrar_resultado(Str,hist,n);

 lista:= TStringList.Create; //cria um file stream a ser usado no programa
 Name:= 'gtk-font-name';     //parte NAME da string do tipo name=value a procurada

 arquivo := GetUserDir ;                             //Adiciona a arquivo o path
 arquivo := IncludeTrailingPathDelimiter ( arquivo );//do arquivo
 arquivo := arquivo + '.gtkrc2.0';                   //".gtkrc2.0"

if (13<=acuidade) and (acuidade<=25) then
    Objeto :=  'gtk-font-name="sans-serif 12"' // nova linha a ser implementada ao arquivo   (mesmo para else if abaixo)
else if (30<=acuidade) and (acuidade<=60) then
    Objeto :=  'gtk-font-name="sans-serif 14"'
else if (70<=acuidade) and (acuidade<=160) then
    Objeto :=  'gtk-font-name="sans-serif 16"'
else if (200<=acuidade) and (acuidade<=400) then
    Objeto :=  'gtk-font-name="sans-serif 18"'
else if (500<=acuidade) and (acuidade<=1000) then
    Objeto :=  'gtk-font-name="sans-serif 20"'
else if acuidade>1000 then
    Objeto :=  'gtk-font-name="sans-serif 22"';


if FileExists(arquivo) then
   begin
        lista.LoadFromFile( arquivo ); // abre o arquivo
        Position := lista.IndexOfName( Name ); //coloca em POSITION a posicao da linha com NAME, caso nao exista a linha, eh considerado -1.

        if position = -1 then
          position := lista.Add( objeto )// cria uma string com OBJETO

        else
             begin
                lista.Delete( position );         //Deleta a string com NAME e
                lista.Insert( position, objeto )  //Cria no mesmo local uma string com OBJETO
             end;

        lista.SaveToFile ( arquivo ); //salva o 'file stream' no arquivo original
   end;

lista.Free;


end.
